package leetcode_101_120;

import utils.TreeNode;

public class isBalanced_110 {
    /**
     * 判断是否是高度平衡的二叉树
     * @param root 给定二叉树
     */
    public boolean isBalanced(TreeNode root) {
        /**
         * 想法是递归进入最下层后向上判断每个节点左右子树的高度差
         * 0ms解决
         */
        function(root);
        return balanced;
    }
    boolean balanced=true;

    public int function(TreeNode root){
        if(root==null)
            return 0;
        int left=function(root.left);
        int right=function(root.right);
        if(balanced==false) //如果子树中已经不满足，直接返回
            return 0;
        if(Math.abs(left-right)>1){  //如果某个节点不满足高度平衡二叉树
            balanced=false;
            return 0;
        }
        else
            return Math.max(left,right)+1;
    }
}
